/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package contatos.patterns.state;

import contatos.collection.Contatos;
import contatos.model.Contato;
import contatos.presenter.ManterContatoPresenter;
import contatos.view.ManterContatoView;
import javax.swing.JOptionPane;

/**
 *
 * @author felipe
 */
public class IncluirState extends ContatoState {

    ManterContatoView view;
    Contatos contatos;

    public IncluirState(ManterContatoPresenter presenter) throws Exception {
        super(presenter);

        view = this.presenter.getView();
        contatos = Contatos.getInstancia();

        //escondendo o botao de editar
        this.view.getBtnEditar().setVisible(false);

        //limpando os campos
        view.getTxtNome().setText("");
        view.getTxtTelefone().setText("");
        view.getTxtOperadora().setText("");
        view.getTxtUF().setText("");
        
        //habilitando
        view.getTxtNome().setEnabled(true);
        view.getTxtTelefone().setEnabled(true);
        view.getTxtOperadora().setEnabled(true);
        view.getTxtUF().setEnabled(true);
        

        this.view.setVisible(true);
    }

    @Override
    public void incluir() {
          String nome = view.getTxtNome().getText();
        String telefone = view.getTxtTelefone().getText();
        String operadora = view.getTxtOperadora().getText();
        String uf = view.getTxtUF().getText();

        try {
            if ((!nome.equals("")) && (view.getTxtTelefone().isEditValid())
                    && !operadora.equals("") && (view.getTxtUF().isEditValid())) {
                String nomes[] = nome.split(" ");
                if (nomes.length > 1) {
                    for (String nome1 : nomes) {
                        if (nome1.trim().length() == 0) {
                            throw new Exception("É necessário um nome e sobrenome");
                        }
                    }
                } else {
                    throw new Exception("É necessário um nome e sobrenome");
                }

                Contato p = new Contato(nome, telefone, operadora, uf);
                if (!contatos.incluir(p)) {
                    throw new Exception("Já existe um contato com esse número de telefone");
                } else {
                    JOptionPane.showMessageDialog(view, nome + " cadastrado com sucesso!");
                    view.getTxtNome().setText("");
                    view.getTxtTelefone().setText("");
                    view.getTxtOperadora().setText("");
                    view.getTxtUF().setText("");
                    view.getTxtNome().requestFocus();
                }
            } else {
                throw new Exception("Você precisa informar todos os campos");
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(view, e.getMessage());
        }
    }

    @Override
    public void visualizar() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void alterar() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

}
